section .text
global start  ;no use "_" in asm
start:
jmp get_address
run:
xor rax, rax       ; zero the registers
xor rdi, rdi
xor rdx, rdx

inc rax
shl rax, 25
add rax, 4         ; 0x2000004 System call write = 4
inc rdi            ; Write to standard out = 1
pop rsi            ; pop the message address into rsi
add rdx, 14        ; message string length
syscall            ; Invoke the kernel

xor rax, rax
inc rax
shl rax, 25
inc rax            ; make rax = 0x2000001 System call number for exit = 1
xor rdi, rdi       ; Exit success = 0
syscall            ; Invoke the kernel

get_address:
call run           ; put address of our message onto the stack

message:
db 'Hello, world!',0x0A
 
